home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-scene-files / Games / 4player / IK_GOLD.D64 / d&h-adapter _d&h < prev    next >
Encoding:
Text File  |  2019-04-13  |  12.2 KB  |  442 lines

  1. -------------------------------------------------------------------------------
  2.       ***   THE DIGITAL EXCESS & HITMEN 4-PLAYER JOYSTICK ADAPTER  ***
  3.  
  4.    OR "4 PLAYERS WITH EASE - HOW SMART PROGRAMMING CAN SUBSTITUTE HARDWARE"
  5. -------------------------------------------------------------------------------
  6.  
  7. CONTENTS:
  8. ---------
  9.  
  10. - CHANGES LOG
  11. - PRELUDE
  12. - HOW IT WORKS
  13. - PARTS LIST
  14. - SHEMATICS
  15. - SAMPLE CODE
  16. - KNOWN PROBLEMS
  17. - LAST WORDS
  18. - CREDITS
  19. - CONTACT ADRESS
  20.  
  21.  
  22. CHANGES:
  23. --------
  24.  
  25. V1.2:       - SAMPLE CODE CLEANUP
  26.  
  27. V1.1:       - SAMPLE CODE UPDATED
  28.             - ADDED FLOW-OF-DATA TO THE SHEMATICS FOR THOSE WHO ARE INTERISTED
  29.             - ADDED COMMENT ON KNOWN PROBLEMS
  30.  
  31. V1.2 PRELUDE
  32. ------------
  33.  
  34. CLEANED UP THE SAMPLE CODE, FIXING A MINOR BUG.
  35.  
  36. V1.1 PRELUDE
  37. ------------
  38.  
  39. HOWDY! CHEERS FOR THE COMMENTS AND SUGGESTIONS I GOT IN MAIL. THIS IS WHAT
  40. ACTUALLY MADE ME PUTTING OUT THIS UPDATE - THE ADDITIONAL INFO COULD BE
  41. INTERISTING FOR YOU ASWELL.
  42.  
  43. V1.0 PRELUDE
  44. ------------
  45.  
  46. AT MEKKA SYMPOSIUM 99 WE TOOK A LOOK AT THE 4-PLAYER ADAPTER THAT IS SUPPORTED
  47. BY THE GAME "BOMB MANIA". THOMAS AND BJOERN HAD STARTED WORKING ON THEIR
  48. PROJECT "DETONATORS 2" A WHILE AGO AND THE MULTI-PLAYER ABILITY WAS PUT ON THE
  49. "MUST HAVE" LIST. HOWEVER, AFTER WE CRACKED UP THE THING WE NOTICED THAT THIS
  50. PARTICULAR ADAPTER NEEDED SOME ELECTRONIC COMPONENTS TO WORK AND BECAUSE OF
  51. THAT IT WAS NOT REALLY SUITABLE FOR THE AVERAGE SCENER TO BUILT ON HIS OWN. WE
  52. ALMOST FORGOT ABOUT THE IDEA OF CREATING A 4 PLAYERS THINGY, UNTIL WE MET AGAIN
  53. AT THE END OF NOVEMBER 99. HAVING NO DECENT DOCUMENTATION EXCEPT SOME SCANNED
  54. C64 SHEMATICS AND SOME IO-MAP IT WAS QUITE A HAZZLE TO KNOCK IT UP SINCE WE HAD
  55. TO DISCOVER A FEW (PROBABLY WELL KNOWN) THINGS OURSELVES, BUT WE FINALLY WORKED
  56. IT OUT. HERE IT IS, EASY TO BUILT FOR EVERYONE - AND DOCUMENTED ASWELL.
  57.  
  58. TAKE THIS AS OUR CHRISTMAS PRESENT FOR YOU - SINCE IT IS CHRISTMAS ANYWAY,
  59. SPEND YOUR TIME ON SOMETHING USEFUL AND DO SOME CHRISTMASSY HANDICRAFT WORK.
  60.  
  61. HOW IT WORKS
  62. ------------
  63.  
  64. TO INTERFACE 2 ADDITIONAL JOYSTICKS WE HAD TO FIND 10 ADDITIONAL INPUT-LINES
  65. ON THE C64. SINCE WE WANTED TO CREATE SOMETHING THAT IS BOTH CHEAP AND COULD
  66. BE BUILT BY PEOPLE WITH VERY LITTLE (IF NOT NONE) SOLDERING EXPERIENCE, WE
  67. LIMITED OURSELVES TO JUST USING PLUGS AND WIRES. WE LOOKED AT THE USER-PORT
  68. AND FOUND 8 LINES AT THE FIRST GLANCE - PORT B OF CIA 2 - WHICH WERE USED TO
  69. CONNECT THE 4 DIRECTIONAL LINES OF EACH JOYSTICK. FINDING 2 MORE LINES FOR
  70. THE BUTTONS WAS A LITTLE MORE TRICKY. IF YOU LOOK CLOSER AT THE USER-PORT,
  71. YOU WILL NOTICE THAT BIT 2 OF CIA 2 PORT A IS CONNECTED TO IT ASWELL, SO
  72. THERE IS JUST ONE OTHER LINE LEFT TO FIND - WHICH TURNED OUT TO BE THE MOST
  73. CHALLENGING PART OF IT ALL. WHAT WE DID IS ABUSING THE SYNCHRONOUS SERIAL
  74. DATA REGISTER OF CIA 2, WHICH IS ALSO AVAILABLE AT THE USER-PORT. TO MAKE
  75. THIS WORK WE HAD TO LET CIA 1 OUTPUT A COUNTER-SIGNAL AT THE CORRESPONDING
  76. USER-PORT PIN AND WE FED THAT SIGNAL BACK INTO CIA 2 SERIAL-COUNTER. NOW BY
  77. USING THE MAXIMUM COUNTER-SPEED POSSIBLE, WE COULD USE THE SYNCHRONOUS
  78. SERIAL REGISTER OF CIA 2 AS ANOTHER 'DIGITAL' INPUT LINE AND BINGO - THERE
  79. WE ARE....
  80.  
  81. PARTS LIST
  82. ----------
  83.  
  84. AMOUNT  WHAT?                  WE FOUND IT AT              COSTS
  85.  
  86.    1    USER PORT PLUG         (CONRAD ELECTRONIC 742201)  3.95 DM
  87.    2    SUB-D 9PIN PLUG, MALE  (CONRAD ELECTRONIC 742066)  0.85 DM EACH
  88.         SOME WIRES             RIP OFF SOMEWHERE             ?
  89.         CASE (OPTIONAL)        OLD CARTRIDGE                 ?
  90.  
  91.                                               TOTAL COSTS: 5.65 DM
  92.  
  93. ANYONE SHOULD BE ABLE TO ASSEMBLE EVERYTHING IN LESS THAN AN HOUR.
  94.  
  95. THE SHEMATICS:
  96. --------------
  97.  
  98. DON'T PANIC! :P THE -->-- /  --<-- SYMBOLS DO JUST MARK THE DIRECTION THE DATA
  99. IS FLOWING! =)
  100.  
  101. USER PORT                     JOYSTICKS
  102. ---------                     ---------
  103.  
  104. GND     1 ---------------+--- 8  JOY 3  GND
  105. CNT1    4 ->-+           +--- 8  JOY 4  GND
  106. CNT2    6 -<-+
  107. SP2     7 ----------<-------- 6  JOY 4  BUTTON
  108. PB0     C ----------<-------- 1  JOY 3  A0
  109. PB1     D ----------<-------- 2  JOY 3  A1
  110. PB2     E ----------<-------- 3  JOY 3  A2
  111. PB3     F ----------<-------- 4  JOY 3  A3
  112. PB4     H ----------<-------- 1  JOY 4  A0
  113. PB5     J ----------<-------- 2  JOY 4  A1
  114. PB6     K ----------<-------- 3  JOY 4  A2
  115. PB7     L ----------<-------- 4  JOY 4  A3
  116. PA2     M ----------<-------- 6  JOY 3  BUTTON
  117.  
  118. NOTE: GND IS CONNECTED TO BOTH JOY3/JOY4 GND - ASWELL CNT1 AND CNT2 ARE BRIDGED
  119.       (SHAME THERE ARE NO DECENT GFX CHARACTERS IN ASCII :P)
  120.  
  121. USER PORT PLUG (BACK VIEW - SOLDERING SIDE)
  122. -------------------------------------------
  123.  
  124.                            (TOP)
  125. +----+-----------------------------------------------+----+
  126. |    | 1   2   3   4   5   6   7   8   9  10  11  12 |    |
  127. | ++ |                                               | ++ |
  128. | ++ |                                               | ++ |
  129. |    | A   B   C   D   E   F   H   J   K   L   M   N |    |
  130. +----+-----------------------------------------------+----+
  131.                           (BOTTOM)
  132.  
  133. JOYSTICK PORT PLUG (BACK VIEW - SOLDERING SIDE)
  134. -----------------------------------------------
  135.  
  136.               (TOP)
  137.  ---\-----------------------/---
  138.  |   \  5   4   3   2   1  /   |
  139.  | *  \                   /  * |
  140.  |     \  9   8   7   6  /     |
  141.  -------\---------------/-------
  142.              (BOTTOM)
  143.  
  144. SAMPLE CODE IN TURBO-ASS SYNTAX (SKIP THIS IF YOU CAN'T CODE *GRIN*)
  145. --------------------------------------------------------------------
  146.  
  147. ;---------------------------------------
  148. ;4 PLAYER ADAPTER SAMPLE CODE BY GPZ/HIT
  149. ;---------------------------------------
  150.  
  151. JOY3REG  = $02  ; EXAMPLE JOY-REGS
  152. JOY4REG  = $03
  153.  
  154. BTEMP    = $04  ; TEMP FOR DISPLAY
  155.  
  156. ;---------------------------------------
  157. ; MAIN
  158. ;---------------------------------------
  159.  
  160.          *= $1000
  161.  
  162.          ;
  163.          ; USUAL IRQ SETUP
  164.          ;
  165.  
  166.          SEI
  167.          LDA #>IRQ
  168.          STA $0315
  169.          LDA #<IRQ
  170.          STA $0314
  171.          LDA #$1B
  172.          STA $D011
  173.          LDA #$7F
  174.          STA $DC0D
  175.          LDA #$FF
  176.          STA $D012
  177.          LDA #$01
  178.          STA $D01A
  179.  
  180.          ;
  181.          ; PRINT INFO
  182.          ;
  183.  
  184.          LDX #$00
  185. LOOP     .VAR *
  186.          LDA SCREEN,X
  187.          JSR $FFD2
  188.          INX
  189.          CPX #22
  190.          BNE LOOP
  191.  
  192.          JSR SETUP    ; CIA SETUP FOR ADAPTER
  193.  
  194.          CLI
  195.  
  196.          JMP *
  197.  
  198. ;---------------------------------------
  199. ; INTERUPT CALLS OTHER ROUTINES
  200. ;---------------------------------------
  201. IRQ
  202.  
  203.          INC $D020
  204.  
  205.          JSR READ   ; READ ADAPTER (TAKES ABOUT 2 RASTERLINES)
  206.  
  207.          INC $D020
  208.  
  209.          LDX #(40*1)+4
  210.          LDA $DC00
  211.          JSR DISPLAYBITS
  212.  
  213.          LDX #(40*2)+4
  214.          LDA $DC01
  215.          JSR DISPLAYBITS
  216.  
  217.          LDX #(40*3)+4
  218.          LDA JOY3REG
  219.          JSR DISPLAYBITS
  220.  
  221.          LDX #(40*4)+4
  222.          LDA JOY4REG
  223.          JSR DISPLAYBITS
  224.  
  225.          LDA #$00
  226.          STA $D020
  227.  
  228.          INC $D019
  229.          JMP $FEBC
  230.  
  231. ;---------------------------------------
  232. ; DISPLAYS 5 LOWEST BITS OF JOYSTICK-REG
  233. ;---------------------------------------
  234. DISPLAYBITS
  235.  
  236.          ROL A
  237.          ROL A
  238.          ROL A
  239.  
  240.          STA BTEMP
  241.  
  242.          LDY #$00
  243. LOOP     .VAR *
  244.  
  245.          ROL BTEMP
  246.          BCC SKIP1
  247.  
  248.          LDA #"-"
  249.          JMP SKIP2
  250. SKIP1
  251.          LDA #"*"
  252. SKIP2
  253.          STA $0400,X
  254.  
  255.          INX
  256.          INY
  257.          CPY #$05
  258.          BNE LOOP
  259.  
  260.          RTS
  261.  
  262. ;---------------------------------------
  263. SCREEN
  264.          .TEXT "{CLR/HOME}JOY BRLDU{RETURN}"
  265.          .TEXT " 1{RETURN}"
  266.          .TEXT " 2{RETURN}"
  267.          .TEXT " 3{RETURN}"
  268.          .TEXT " 4{RETURN}"
  269.  
  270. ;---------------------------------------
  271.  
  272. ;---------------------------------------
  273. READ
  274. ;---------------------------------------
  275. ; READS ADAPTER AND COMPOSES THE
  276. ; ADDITIONAL VIRTUAL JOYSTICK-REGISTERS
  277. ;---------------------------------------
  278. ;THIS CODE DEMONSTRATES HOW TO READ THE
  279. ;ADDITIONAL 2 JOYSTICKS AND HOW TO COM-
  280. ;POSE 2 'VIRTUAL' JOYSTICK-REGISTERS
  281. ;THAT CAN BE PROCESSED EXACTLY LIKE THE
  282. ;USUAL ($DC00/$DC01) ONES.
  283. ;---------------------------------------
  284.          ;
  285.          ; SAVE CIA 2 REGISTERS
  286.          ;
  287.  
  288.          LDA $DD00
  289.          STA CIASAVE1+1
  290.          LDA $DD02
  291.          STA CIASAVE2+1
  292.  
  293.          ;
  294.          ; READ DIRECTIONS JOY 3+JOY 4
  295.          ;
  296.  
  297.          LDA $DD01 ;READ CIA 2 PORT B
  298.          STA TEMP+1
  299.  
  300.          AND #$0F
  301.          STA JOY3REG
  302.  
  303. TEMP     LDA #$00
  304.          LSR A
  305.          LSR A
  306.          LSR A
  307.          LSR A
  308.          STA JOY4REG
  309.  
  310.          ;
  311.          ; READ BUTTON JOY 3
  312.          ;
  313.  
  314.          LDA $DD02      ;CIA 2 PORT A
  315.          AND #%11111011 ;DATA DIRECTION
  316.          STA $DD02      ;=> BIT 2 INPUT
  317.  
  318.          LDA $DD00      ;READ CIA 2 P.A
  319.          AND #%00000100 ;CHECK BIT 2
  320.          ASL A
  321.          ASL A
  322.          ORA JOY3REG
  323.          STA JOY3REG
  324.  
  325.          ;
  326.          ; READ BUTTON JOY 4
  327.          ;
  328.  
  329.          LDA #$FF ;SERIAL DATA REGISTER
  330.          STA $DC0C;=> WRITING $FF CAUSES
  331.                   ;CIA TO OUTPUT SOME
  332.                   ;COUNT SIGNALS AT CNT1
  333.  
  334.          LDA $DD0C ;READ CIA 2 SERIAL IN
  335.          BEQ FIRE  ;BUTTON PRESS IF ZERO
  336.  
  337.          LDA JOY4REG
  338.          ORA #%00010000
  339.          STA JOY4REG
  340.  
  341. FIRE
  342.  
  343.          ;
  344.          ; RESTORE CIA 2 REGISTERS
  345.          ;
  346.  
  347. CIASAVE1 LDA #$00
  348.          STA $DD00
  349. CIASAVE2 LDA #$00
  350.          STA $DD02
  351.  
  352.          RTS
  353.  
  354. ;---------------------------------------
  355. SETUP
  356. ;---------------------------------------
  357. ;WARNING: DO NOT MESS AROUND WITH THIS
  358. ;         UNLESS YOU REALLY KNOW WHAT
  359. ;         YOU ARE DOING! WRONG CIA SETUP
  360. ;         MAY TOAST YOUR CIA'S !
  361. ;---------------------------------------
  362.  
  363.          ;
  364.          ; CIA 2 SETUP
  365.          ;
  366.  
  367.          LDA #$00  ; PORT B DIRECTION
  368.          STA $DD03 ; => INPUT
  369.  
  370.          LDA #$01
  371.          STA $DD04 ; TIMER A LOWBYTE
  372.          LDA #$00
  373.          STA $DD05 ; TIMER A HIGHBYTE
  374.  
  375.          LDA #%00010001
  376.          STA $DD0E ; CONTROL REGISTER A
  377.                    ; TIMER: START
  378.                    ;        CONTINOUS
  379.                    ;        FORCED LOAD
  380.                    ; SERIAL PORT: INPUT
  381.  
  382.          ;
  383.          ; CIA 1 SETUP
  384.          ;
  385.  
  386.          LDA #$01
  387.          STA $DC04 ; TIMER A LOWBYTE
  388.          LDA #$00
  389.          STA $DC05 ; TIMER A HIGHBYTE
  390.  
  391.          LDA #%01010001
  392.          STA $DC0E ; CONTROL REGISTER A
  393.                    ; TIMER: START
  394.                    ;        CONTINOUS
  395.                    ;        FORCED LOAD
  396.                    ; SERIAL PORT: OUTPUT
  397.  
  398.          LDA #$FF ;SERIAL DATA REGISTER
  399.          STA $DC0C;=> WRITING $FF CAUSES
  400.                   ;CIA TO OUTPUT SOME
  401.                   ;COUNT SIGNALS AT CNT1
  402.          RTS
  403.  
  404.  
  405. ;------------------------------------------------------------------------------
  406.  
  407. KNOWN PROBLEMS:
  408. ---------------
  409.  
  410. THERE IS, HOWEVER, SOME MINOR PROBLEM WITH PROGRAMMING A GAME THAT SUPPORTS THE
  411. ADAPTER. IT IS, THAT IF THE ADAPTER IS NOT CONNECTED TO THE C64, THE CODE AS
  412. SHOWN HERE WILL ALWAYS REPORT FIRE ON JOY4 PRESSED. SO IF YOU WANT YOUR GAME TO
  413. WORK WITHOUT THE ADAPTER ASWELL, YOU NEED A USER-INTERACTIVE OPTION TO SWITCH
  414. THE ADAPTER-READING CODE OFF. (OR IGNORE WHAT IT REPORTS RESPECTIVLY. ALSO,
  415. YOU SHOULDNT USE FIRE ON JOY 4 IN MENUS OR SUCH THINGS LIKE 'START GAME' IF
  416. THERE ISNT A WAY TO SWITCH THE ADAPTER OFF BEFORE (THE GAME WOULD BE UNUSEABLE
  417. WITHOUT THE ADAPTER).
  418.  
  419. LAST WORDS:
  420. -----------
  421.  
  422. WITH THIS THING WE HOPE TO MOTIVATE SOME MORE PEOPLE TO DEVELOP MULTI-PLAYER
  423. CAPABLE GAMES FOR OUR BELOVED MACHINE. SEVERAL GAME CONCEPTS DO JUST CRY FOR
  424. AN EXPANSION LIKE THIS! IT'S UP TO YOU NOW... MAY IT BE PATCHING EXISTING
  425. GAMES (LIKE ALL THOSE ROUND-BASED SPORT GAMES FOR EXAMPLE) OR CREATING
  426. ASTONISHING NEW ONES FROM SCRATCH.
  427.  
  428.               "IMAGINATION IS MORE IMPORTANT THAN KNOWLEDGE." (ALBERT EINSTEIN)
  429.  
  430. CREDITS:
  431. --------
  432.  
  433. GROEPAZ/HITMEN                 : HARDWARE SPANKING, THIS DOCUMENT
  434. THOMAS KONCINA/DIGITAL EXCESS  : CODING, MENTAL SUPPORT
  435. BJOERN ODENDAHL/DIGITAL EXCESS : TEST APPLICATION GRAPHICS, RELEASE PACKAGING
  436.  
  437. CONTACT:
  438. --------
  439.  
  440. GROEPAZ/HITMEN                 : GROEPAZ@GMX.NET
  441. BJOERN ODENDAHL/DIGITAL EXCESS : SEVEN@CRYPT.RUHR.DE
  442.